NUMA 架构
NUMA 架构,非一致性内存访问,是一种多个 CPU 如何访问内存的架构模型。
起初 CPU 这样访问内存。

在这个访问模型(SMP)中,多个 cpu 通过同一条总线对内存同时进行操作,在 CPU 数量少(2-4)的时候,性能瓶颈并不明显,但是当 cpu 数量增多,一些瓶颈就出现了。

为了解决多个多个 cpu 在同一个总线上同时对 cpu 进行操作的瓶颈,于是 NUMA 架构出现了。
也就是将多个内存分成多个区域(nodes),在每个区域中分配对应的 CPU。
也就是一个 node 中,内部的 cpu 使用一条总线去操作本地的内存,而这时候的访问速度是最快的,然而当内存不够时,便出现了跨 node 去访问内存的情况,此种情况反而增加了延迟速度。

很多时候 NUMA 架构都是默认开启的,但是有些时候一些程序会频繁跨 node 去访问内存,像 redis 或者其他数据库,这时候我们需要将 NUMA 进行关闭。
vim /etc/default/grub 文件,在 GRUP_CMDLINE_LINUX=”” 引号里最后添加下面配置。
numa=off
重新生成 grup2.cfg
grub2-mkconfig -o /etc/grub2.cfg
重新启动 linux 服务器
reboot
重启后确认是否已经关闭 NUMA:
dmesg|grep -i numa
观察是否有如下字样
NUMA turned off
正文完